/**
 *  @author 侯庆峰, 15/11/18.
 *
 *  @name LTHttpClient.h
 *
 *  @brief LTHttpClient is used for Get and Post requestion.
 *
 *  @copyright © 2015年 letv. All rights reserved.
 */

#ifndef LTHttpClient_h
#define LTHttpClient_h

#import <Foundation/Foundation.h>

/**
 *  request success 回调函数
 *
 *  @param NSData 服务器返回数据
 *  @param NSDictionary  额外信息
 *       key:startTime  value:(long) 请求起始时间
 *       key:endTime    value:(long) 响应结束时间
 */
typedef void (^LTCurlCompleteBlock)(NSData*,NSDictionary*);

/**
 *  request fail 回调函数
 *
 *  @param NSError Request失败说明
 */
typedef void (^LTCurlErrorBlock)(NSError*);

/**
 *  Curl Client
 */
@interface LTHttpClient : NSObject
@property (nonatomic,assign)NSInteger tag;//超时时间
/**
 *  Post Request
 *
 *  @param url             url地址
 *  @param data            post数据
 *  @param timeout         连接超时时间
 *  @param httpHeaderDic   http报文头
 *  @param completionBlock request成功回调函数（服务器有返回值）
 *  @param errorBlock      request失败回调函数
 */
- (void)POST:(NSString*)url
        data:(NSData*)data
     timeout:(int)timeout
  httpHeader:(NSDictionary*)httpHeaderDic
completionHandler:(LTCurlCompleteBlock)completionBlock
errorHandler:(LTCurlErrorBlock) errorBlock;

/**
 *  Get Request
 *
 *  @param url             url地址
 *  @param timeout         连接超时时间
 *  @param httpHeaderDic   http报文头
 *  @param completionBlock request成功回调函数（服务器有返回值）
 *  @param errorBlock      request失败回调函数
 */
-(void)GET:(NSString*)url
   timeout:(int)timeout
httpHeader:(NSDictionary*)httpHeaderDic
completionHandler:(LTCurlCompleteBlock)completionBlock
errorHandler:(LTCurlErrorBlock)errorBlock;

/**
 *  使用request对象取消请求
 */
- (void)cancelRequest;

/**
 *  使用url取消请求
 */
+ (void)cancelRequest:(NSString*)url;
+ (void)cancelRequestWithTag:(NSInteger)tag;

@end

#endif /* LTCurlClient_h */